package com.conselheiro.web.beans;

import java.io.IOException;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import org.apache.log4j.Logger;

import com.conselheiro.web.entidade.Usuario;
import com.conselheiro.web.entidade.enumeration.TipoPost;
import com.conselheiro.web.gamefication.GerenciadorNiveis;

@ManagedBean
@SessionScoped
public class SessaoBean extends AbstractBean {

	private static final long serialVersionUID = -7412557435531947812L;
	private Logger logger = Logger.getLogger(getClass());
	private String nivelUsuario;

	public Usuario getUsuario() {
		Usuario usuario = getFachada().getUsuario(getLogin());
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
	}

	public String getNivelUsuario() {
		return nivelUsuario;
	}
	
	public void visualizarNovosConselhos() throws IOException {
		getFachada().resetNotificacaoNovosConselhos(getUsuario());
		FacesContext.getCurrentInstance().getExternalContext().redirect("/restrito/perfil.jsf?user=" + getUsuario().getId());
	}
	
	public void visualizarNovidadesNosRelatos() throws IOException {
		getFachada().resetNotificacaoNovidadesNosRelatos(getUsuario());
		FacesContext.getCurrentInstance().getExternalContext().redirect("/restrito/perfil.jsf?user=" + getUsuario().getId());
	}
	
	public void verificar() {}

	public void setNivelUsuario(String nivelUsuario) {
		this.nivelUsuario = nivelUsuario;
	}

	public String logout() {
		ExternalContext ec = FacesContext.getCurrentInstance()
				.getExternalContext();
		logarInfo(logger, "LOGOUT REALIZADO");
		ec.getSessionMap().remove(AUTH_KEY_LOGIN);

		return "sair";
	}

	public long getRelatosTotais() {
		return getFachada().getTotalRelatosUsuario(getLogin());
	}

	public long getConselhosTotais() {
		long totalConselhosUsuario = getFachada().getTotalConselhosUsuario(
				getLogin());
		setNivelUsuario(GerenciadorNiveis
				.getClassificacaoUsuario(totalConselhosUsuario));
		return totalConselhosUsuario;
	}

	public String getAreaInteresse() {
		TipoPost areaInteresseUsuario = getFachada().getAreaInteresseUsuario(
				getLogin());
		return areaInteresseUsuario == null ? "-" : areaInteresseUsuario
				.getDescricao();
	}
}
